﻿namespace AladdinGameFramework
{
	/// <summary>
	/// 游戏框架模块抽象类
	/// </summary>
	internal abstract class GameFrameworkModule
	{
		/// <summary>
		/// 游戏框架模块优先级
		/// </summary>
		/// <remarks>优先级较高的会有限轮询，并且关闭操作会后进行</remarks>
		internal virtual int Priority
		{
			get { return 0; }
		}

		/// <summary>
		/// 游戏框架模块轮询
		/// </summary>
		/// <param name="elapseSecond">逻辑流逝时间，以秒为单位</param>
		/// <param name="realElapseSeconds">真实的流逝时间，以秒为单位</param>
		internal abstract void Update(float elapseSecond, float realElapseSeconds);

		/// <summary>
		/// 关闭并清理游戏框架
		/// </summary>
		internal abstract void Shutdown();
	}
}
